package org.dromara.common.area.core.enums;


import lombok.AllArgsConstructor;
import lombok.Getter;
import org.dromara.common.core.enums.ArrayValuable;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 区域类型枚举
 *
 * @author Ckj
 */
@AllArgsConstructor
@Getter
public enum AreaTypeEnum implements ArrayValuable<Integer> {

    COUNTRY(1, "国家"),
    PROVINCE(2, "省份"),
    CITY(3, "城市"),
    DISTRICT(4, "地区"), // 县、镇、区等
    ;

    // 静态映射表：用于快速根据 type 查找枚举实例
    private static final Map<Integer, AreaTypeEnum> TYPE_MAP = new HashMap<>();

    static {
        // 初始化映射表
        for (AreaTypeEnum enumItem : AreaTypeEnum.values()) {
            TYPE_MAP.put(enumItem.getType(), enumItem);
        }
    }

    public static final Integer[] ARRAYS = Arrays.stream(values()).map(AreaTypeEnum::getType).toArray(Integer[]::new);

    /**
     * 类型
     */
    private final Integer type;
    /**
     * 名字
     */
    private final String name;

    @Override
    public Integer[] array() {
        return ARRAYS;
    }

    public static AreaTypeEnum getByType(Integer type) {
        return TYPE_MAP.get(type);
    }
}
